//package com.tjetc;
//
//import java.io.File;
//import java.io.FileNotFoundException;
//
//public class _1Exception {
//    // main方法 本身其实是开了一个main的主线程去执行
//    public static void main(String[] args) {
//        /*
//            异常：
//            1.常见的异常
//            2.自定义异常
//            3.如何抛出异常
//            4.怎么捕获异常
//
//            异常顶级父类 Throwable
//                Error： 我们不用关心 严重错误，一般情况下出现了 程序必然停止
//                Exception：我们需要关心，可以通过代码让错误跳过，这种错误只会影响一部分功能
//                    RunException：运行时异常
//                    编译时异常
//         */
//
//        // 演示的都是运行时异常
//        // 算术异常(ArithmeticException) 这个异常将来会被JVM所处理 处理的结果就是中断程序
//        // 在生产环境中 能不能允许程序结束了？ 意味着功能全🈚了 如果出现这种情况
////        System.out.println(10 / 0);
//
////        NumberFormatException 数字转换异常
////        Integer.parseInt("hello");
//
////        ClassCastException 类型转换异常
//        Animal dog = new Dog();
//        Dog dog1 = (Dog) dog;
////        Cat cat = (Cat) dog;
//
////        NullPointerException 空指针异常
//        String s = null;
////        s.length();
//
////        ArrayIndexOutOfBoundsException 数组越界
//        int[] arrs = new int[1];
////        System.out.println(arrs[1]);
//
//
//        // 演示的是编译时异常
////        File file = new File("");
////        file.createNewFile(); // 这种异常必须在编译期就要处理 不处理代码运行不了 我们更希望将异常发生在编译期
//
//        // ClassNotFoundException
////        Class.forName("");
//    }
//}
//
//class Animal {}
//
//class Dog extends Animal {}
//
//class Cat extends Animal{}